From 08a5694e451218f1bcb2ad9eb42fd93250afbb96 Mon Sep 17 00:00:00 2001 From: MohamedBassem Date: Fri, 9 Feb 2024 01:50:35 +0000 Subject: [refactor] Extract the bookmark model to be a high level model to support other type of bookmarks --- .../web/app/api/v1/bookmarks/[bookmarkId]/route.ts | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 packages/web/app/api/v1/bookmarks/[bookmarkId]/route.ts (limited to 'packages/web/app/api/v1/bookmarks/[bookmarkId]') diff --git a/packages/web/app/api/v1/bookmarks/[bookmarkId]/route.ts b/packages/web/app/api/v1/bookmarks/[bookmarkId]/route.ts new file mode 100644 index 00000000..6adcf771 --- /dev/null +++ b/packages/web/app/api/v1/bookmarks/[bookmarkId]/route.ts @@ -0,0 +1,32 @@ +import { authOptions } from "@/lib/auth"; +import { deleteBookmark } from "@/lib/services/bookmarks"; +import { Prisma } from "@remember/db"; + +import { getServerSession } from "next-auth"; +import { NextRequest } from "next/server"; + +export async function DELETE( + _request: NextRequest, + { params }: { params: { bookmarkId: string } }, +) { + // TODO: We probably should be using an API key here instead of the session; + const session = await getServerSession(authOptions); + if (!session) { + return new Response(null, { status: 401 }); + } + + try { + await deleteBookmark(params.bookmarkId, session.user.id); + } catch (e: unknown) { + if ( + e instanceof Prisma.PrismaClientKnownRequestError && + e.code === "P2025" // RecordNotFound + ) { + return new Response(null, { status: 404 }); + } else { + throw e; + } + } + + return new Response(null, { status: 201 }); +} -- cgit v1.2.3-70-g09d2